const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const FoodSchema = new Schema({
  name: { type: String, required: true, index: true },
  aliases: [{ type: String }],  // 食物别名，增强搜索能力
  category: { type: String, index: true }, // 如"主食"、"蔬菜"、"肉类"等
  calories: { type: Number, required: true }, // 每100g的卡路里
  carbs: { type: Number, default: 0 },     // 每100g的碳水(g)
  protein: { type: Number, default: 0 },   // 每100g的蛋白质(g)
  fat: { type: Number, default: 0 },       // 每100g的脂肪(g)
  fiber: { type: Number, default: 0 },     // 纤维素(g)
  sugar: { type: Number, default: 0 },     // 糖(g)
  commonPortions: [{                      // 常见份量
    description: String,  // 如"一碗"、"一份"
    gramWeight: Number    // 对应的克重
  }],
  imageUrl: { type: String, required: false }, // 食物图片URL(非必须，主要用于后台管理，用户端不显示)
  isVerified: { type: Boolean, default: true }, // 是否官方验证数据
  source: { type: String, default: 'system' }, // 数据来源
  createdBy: { type: Schema.Types.ObjectId, ref: 'User' }, // 用户添加的食物会关联用户ID
  createdAt: { type: Date, default: Date.now },
  searchCount: { type: Number, default: 0 } // 搜索计数，用于排序推荐
});

// 创建文本索引以支持搜索
FoodSchema.index({ name: 'text', category: 'text', aliases: 'text' });
// 添加复合索引提高查询性能
FoodSchema.index({ name: 1, category: 1 });
// 添加搜索计数索引，便于排序
FoodSchema.index({ searchCount: -1 });

module.exports = mongoose.model('Food', FoodSchema); 